//
// Created by 123 on 2024/12/31.
//
/**
 * const修饰成员函数
 */
#include "iostream"
using namespace std;

class Person{
public:
    int ma;
    mutable int mb;
public:
    Person(){
        ma = 0;
        mb = 0;
    }
    //this指针本质是一个指针常量,指针的指向不可以修改
    //如果想让指针指向的值也不可以修改,需要声明常函数
    void showPerson()const{
//        this->ma = 2;
        //const修饰成员函数,表示指针指向的内存空间的数据不能修改,除了mutable修饰的变量
        this->mb = 2;
//        this = NULL;//不能修改指针的指向 Person* const this;

    }
    void myFunc() {
        ma = 100;
        mb = 200;
    }
};

void test(){
    const Person person;//常量对象
    //常量对象可以访问成员变量,但是不能修改
    cout << person.ma << endl;
//    person.ma = 200;
    person.mb = 200;//常量对象可以修改mutable修饰的成员变量
    person.showPerson();//常量对象可以调用常成员函数,不能调用一般成员函数
//    person.myFunc();
}

int main068(){
    test();

    return 0;
}